<?php
namespace app\index\controller;

use app\index\model\User;

/**
 * 模型
 */
class Ha
{

    /**
     * 查询数据
     */

    // 获取单个数据
    public function index()
    {
        // 取出主键为1的数据
        $user = User::get(1);

        // 使用数组查询
        $user = User::get(['username'=>'tdc']);

        // 使用闭包查询
        $user = User::get(function($query){
            $query->where('username', 'tdc_admin');
        });

        // 在实例化模型后调用查询方法
        $User = new User();
        $user = $User->where('username', 'tdc')->find();
    }

    // 获取多个数据
    public function a()
    {
        // 根据主键获取多个数据
        $list = User::all('1,2,3');

        // 或者使用数组
        $list = User::all([1,2,3]);
        foreach($list as $k=>$user)
        {
//            echo $user->username.'<br/>';
        }

        // 使用数组查询
        $list = User::all(['status'=>1]);

        // 使用闭包查询
        $list = User::all(function($query){
            $query->where('status', 1)->limit(3)->order('id', 'asc');
        });

        // 或者在实例化模型后调用查询方法
        $User = new User();
        $list = $User->where('status', 1)->limit(10)->order('id', 'desc')->select();
        foreach($list as $k=>$user)
        {
//            echo $user->username.'<br/>';
        }
    }

    // 获取某个字段或者某个列的值
    public function b()
    {
        // 获取某个用户的邮箱
        $email = User::where('id',10)->value('email');

        // 获取某个列的所有值
        $names = User::where('status',1)->column('username');

        // 以id为索引
        $ns = User::where('status',1)->column('username','id');
    }

    // 动态查询
    public function c()
    {
        // 根据username字段查询用户
        $user = User::getByUsername('tdc');

        // 根据email字段查询用户
        $user = User::getByEmail('fd2014lyz@126.com');
    }

    // 通过Query类查询
    public function d()
    {
        // 或者使用数据库的查询方法进行更复杂的查询
        $list = User::where('id', '>', 2)->select();
        $info = User::where('username', 'tdc')->find();

        print_r($info);
        print_r($list);
    }

    // 数据分批处理
    public function e()
    {
        $list = User::chunk(3, function($users){
            foreach($users as $user)
            {
                echo $user->username;
            }
        });

//        print_r($list);
    }

    // 查询缓存
    public function f()
    {
        // get方法和all方法的第三个参数表示是否使用查询缓存，或者设置缓存标识
        // 由于第二个参数是关联预载入定义，V5.0.6+版本开始，可以直接在第二个参数传入true表示开启查询缓存
        $user = User::get(2, '', true);
//        $user = User::get(2, true, true);

        $list = User::all('1,2,3', '', true);

//        print_r($user);
//        print_r($list);
    }


    /**
     * 聚合函数
     */

    // 聚合函数
    public function g()
    {
        // 静态调用
        $count = User::count();
        User::where('status','>',0)->count();
        User::where('status',1)->avg('status');
        User::max('status');

        // 动态调用
        $user = new User;
        $count = $user->count();

//        print_r($count);
    }

}